package com.itheima.controller;

import com.itheima.pojo.Emp;
import com.itheima.pojo.Result;
import com.itheima.pojo.PageBean;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.util.List;

@Slf4j
@RestController
@RequestMapping("/emps")
public class EmpController {

    @Autowired
    private EmpService empService;

//    /**
//     * 员工信息的分页查询
//     * @param page 当前页码 默认值是1
//     * @param pageSize 每页的记录数 默认值是10
//     * @return
//     */
//    @GetMapping
//    public Result page(@RequestParam(defaultValue = "1") Integer page,
//                       @RequestParam(defaultValue = "10") Integer pageSize){
//        PageBean pageBean = empService.page(page, pageSize);
//        log.info("分页查询员工信息：页码 {} 条数 {}", page, pageSize);
//        return Result.success(pageBean);
//    }

    /**
     * 条件分页查询
     * @param page
     * @param pageSize
     * @param name
     * @param gender
     * @param begin
     * @param end
     * @return
     */
    @GetMapping
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer pageSize,
                       String name, Short gender,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){
        PageBean pageBean = empService.page(page, pageSize, name, gender, begin, end);
        log.info("分页查询员工信息：参数 {}, {}, {}, {} ,{}, {}", page, pageSize, name, gender, begin, end);
        return Result.success(pageBean);
    }

    /**
     * 删除员工信息
     * @param ids
     * @return
     */
    @DeleteMapping("/{ids}")
    public Result delete(@PathVariable List ids){
        empService.delete(ids);
        log.info("删除员工信息：{}", ids);
        return Result.success();
    }

    /**
     * 新增员工信息
     * @param emp
     * @return
     */
    @PostMapping
    public Result add(@RequestBody Emp emp){
        empService.add(emp);
        log.info("新增员工信息：{}",emp);
        return Result.success();
    }

    /**
     * 查询回显（在修改数据时需要将之前的数据回显给用户看）
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Result select(@PathVariable Integer id){
        Emp emp = empService.select(id);
        log.info("查询回显{}", id);
        return Result.success(emp);
    }

    /**
     * 修改员工信息
     * @param emp
     * @return
     */
    @PutMapping
    public Result update(@RequestBody Emp emp){
        empService.update(emp);
        log.info("修改员工信息{}",emp);
        return Result.success();
    }
}
